CharSet and Collation
- 📦 Character set = l’alphabet disponible
- 📚 Collation = les règles de classement et de comparaison
Character set
c'est le jeu de caractères
Le character set définit quels caractères peuvent être stockés et comment ils sont encodés en binaire.
👉 Il répond à la question : “Quels symboles ma base peut-elle contenir ?”
Exemples:
- ascii → seulement lettres anglaises de base
- latin1 → caractères d’Europe de l’Ouest
- utf8 / utf8mb4 → presque tous les caractères Unicode (emojis, alphabets du monde, etc.)
✅ Conseil actuel : 👉 utiliser utf8mb4 (le plus complet)
collation
La collation définit comment les chaînes de caractères sont comparées et triées.
👉 Elle répond à la question : “Comment comparer deux textes ?”
Elle détermine :
- la sensibilité à la casse (A = a ?)
- la sensibilité aux accents (é = e ?)
- l’ordre de tri
Exemples (MySQL)
- utf8mb4_general_ci
- utf8mb4_unicode_ci
- utf8mb4_bin
- ci = case insensitive
- cs = case sensitive
- bin = comparaison binaire (très stricte)
Notes
En MySQL :
- utf8 = UTF-8 limité à 3 octets, Impossible de stocker les caractères sur 4 octets: 😃 emojis ...
- utf8mb4: Supporte 1 à 4 octets, Conforme au standard Unicode, Gère tous les caractères (emojis inclus)
Exemple recommandé (MySQL)
CREATE DATABASE app_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Pour une table :
ALTER TABLE users
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;